﻿namespace _1Homework09
{
    /// <summary>
    /// 第一行一颗星，输出一个N（用户输入）行的空心的等边三角形
    /// </summary>
    internal class Program
    {
        static void Main(string[] args)
        {
            //用户输入行数N
            Console.Write("请输入行数N：");

            //读取用户输入并转换为整数
            if (int.TryParse(Console.ReadLine(), out int N) && N > 0)
            {

                //利用循环输出该空心等边三角形
                for (int i = 1; i <= N; i++)
                {
                    //计算每行星号数量：只有第一行和最后一行是全部输出星号，其余行都只有首尾两个星号
                    int stars = (i == 1 || i == N) ? (2 * i - 1) : 2;

                    //输出前面的空格
                    for (int j = N - i; j > 0; j--)
                    {
                        Console.Write(" ");
                    }

                    //输出星号
                    //如果是第一行和最后一行就全部输出星号
                    if (i == 1 || i == N)
                    {
                        for (int k = 0; k < stars; k++)
                        {
                            Console.Write("*");
                        }

                        //换行
                        Console.WriteLine();
                    }

                    //中间行每行先输入一个星号，再输入中间空格，最后每行输入末尾的星号
                    else
                    {
                        //输入第一个星号
                        Console.Write("*");

                        //计算中间空格数量
                        int blankspace = 2 * (i - 1) - 1;

                        //输出中间空格
                        for (int k = 0; k < blankspace; k++)
                        {
                            Console.Write(" ");
                        }

                        //输出末尾星号并换行
                        Console.WriteLine("*");
                    }
                }
            }
            else
            {
                //提示输入无效，请重新输入一个正确的正整数
                Console.WriteLine("输入无效，请输入一个正确的正整数！");
            }
        }
    }
}
